Fuzz: Add curated seed corpus - #2530
Conversation
|
@alamb for instance here in the CI log you can find:
It says it cannot build target because we have never yet built the harnesses on main, so it does not have the reference, but it should only go red when it is actually new. |
|
Can we please make sure this data is not included in the release tarball too? |
2dfcf1d to
bf1d97d
Compare
54 hand-written seeds cover the statement grammar, comments, quoting and dialect-specific syntax. 141 statements are sampled and deduplicated from the dialect datasets of LucaCappelletti94/sql_ast_benchmark, re-licensed from MIT to Apache-2.0 by the same sole author. build.sh packages the seeds as <target>_seed_corpus.zip so ClusterFuzzLite code-change and batch runs start from them. Every seed parses under at least one of the 14 fuzzed dialects and round-trips cleanly through Display.
Exclude fuzz/fuzz_seeds from git archive release tarballs via .gitattributes export-ignore. Add assertions in create-tarball.sh, verify-release-candidate.sh, and the license CI workflow to verify the seed corpus is not packaged into source release archives.
bf1d97d to
365bb9b
Compare
|
@alamb works as advertised!
|
Step 4 of #2519, stacked on the roundtrip harness branch.
Adds 195 seed inputs in
fuzz/fuzz_seeds/, with some from https://github.com/LucaCappelletti94/sql_ast_benchmark and others from the test suite.build.shnow packages the directory as<target>_seed_corpus.zipnext to each binary, which is the OSS-Fuzz and ClusterFuzzLite convention, so code-change and batch runs start from it instead of from random bytes.fuzz/fuzz_seeds/*is added to the RAT exclusions.With this hot-start, the
fuzz_parse_sqlandfuzz_parse_roundtripharnesses reach cov 10938 edges (previously 3238) and 12579 (previously 3360) respectively, in the same 30 seconds window.The cluster CI job finally starts to actually mine bugs :)